package com.example.software.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.software.dto.CompanyRegisterDTO;
import com.example.software.dto.LoginDTO;
import com.example.software.dto.WorkerRegisterDTO;
import com.example.software.entity.User;

import java.util.List;
import java.util.Map;

public interface UserService extends IService<User> {

    /**
     * 企业用户注册
     * @param registerDTO 注册信息
     * @return 注册结果
     */
    boolean registerCompany(CompanyRegisterDTO registerDTO);

    /**
     * 零工用户注册
     * @param registerDTO 注册信息
     * @return 注册结果
     */
    boolean registerWorker(WorkerRegisterDTO registerDTO);

    /**
     * 用户登录
     * @param loginDTO 登录信息
     * @return token
     */
    String login(LoginDTO loginDTO);

    /**
     * 根据用户名查询用户
     * @param username 用户名
     * @return 用户信息
     */
    User getByUsername(String username);

    /**
     * 根据用户ID获取用户信息
     * @param userId 用户ID
     * @return 用户信息
     */
    User getUserById(Long userId);

    /**
     * 根据用户名获取用户信息
     * @param username 用户名
     * @return 用户信息
     */
    User getUserByUsername(String username);

    /**
     * 批量获取用户名
     * @param userIds 用户ID列表
     * @return 用户ID与用户名的映射
     */
    Map<Long, String> getUsernamesByIds(List<Long> userIds);
    
    /**
     * 创建管理员用户
     * @param adminDTO 管理员信息
     * @return 是否成功
     */
    boolean createAdmin(LoginDTO adminDTO);
    
    /**
     * 获取所有用户列表
     * @return 用户列表
     */
    List<User> getAllUsers();
    
    /**
     * 删除用户
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean deleteUser(Long userId);
} 